package cn.stylefeng.guns.modular.gridsystem.model.param;

import cn.stylefeng.guns.core.pojo.base.param.BaseParam;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * 网关任务下发表
 *
 * @author zxw
 * @date 2022/10/31 14:34
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GatewayTaskParam extends BaseParam {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = {edit.class, issued.class, rollback.class, callbackGatewayTask.class})
    private Long id;

    /**
     * 任务类型：1-更新配置、2-更新固件程序、3-重启程序、4-重启硬件、5-上报最新文件
     */
    @NotNull(message = "任务类型不能为空", groups = {add.class, edit.class})
    private String taskType;

    /**
     * 任务状态：0-待下发、1-已下发、2-已响应、3-已过期
     */
    private String taskStatus;

    /**
     * 任务附加参数
     */
    private String taskParams;

    /**
     * 站点ID
     */
    private Integer stationId;


    @NotNull(message = "关联网关不能为空", groups = {add.class, edit.class})
    private Integer[] gatewayIds;

    /**
     * 网关ID
     */
    private Integer gatewayId;

    /**
     * 上报网关的编号 (ApiController的callbackGatewayTask用到)
     */
    @NotNull(message = "上报网关的编号不能为空", groups = {getTodayGatewayTask.class})
    private String gatewayCode;

    /**
     * 开始时间
     */
    private String startTime;

    /**
     * 结束时间
     */
    private String endTime;

    /**
     * 任务响应结果
     */
    private String responseResult;


    public @interface issued {
    }

    public @interface rollback {
    }

    /**
     * 查询当天已下发状态的任务 api 参数
     */
    public @interface getTodayGatewayTask {
    }

    /**
     * 上报任务执行的回执 api 参数
     */
    public @interface callbackGatewayTask {
    }
}
